// 引入数据库
const db=require('../db/index')
// 引入加密
const bcrypt = require('bcryptjs')

// 获取用户信息的处理函数
exports.getUserInfo=(req,res)=>{

    const userinfo=req.body
    const sql="select id,username,nickname,email,user_pic from ev_users where id=?"

    // 成功生成token后会自动往req上挂载user，user包含生成token的用户信息
    db.query(sql,req.user.id,(err,result)=>{
        // sql语句发生错误
        if(err){
          return  res.send({
                status:201,
                msg:err.message
            })
        }
        // 没有找到用户
        if(result.length!==1){
            return res.send({
                status:201,
                msg:"该用户未注册"
            })
        }
        // 返回用户信息
        return  res.send({
            status:200,
            msg:'成功',
            data:result[0]
        })
    })

}


//更新用户信息的处理函数
exports.updateUserInfo=(req,res)=>{

    // 根据id搜索用户信息，进行修改
    const sql="update ev_users set ? where id=? "
    db.query(sql,[req.body,req.body.id],(err,result)=>{
        if(err){
            return res.send({
                status:201,
                msg:err
            })
        }

        if(result.affectedRows!==1){
            return res.send({
                status:201,
                msg:"更新用户信息失败"
            })
        }
        res.send({
            stauts:200,
            msg:'更新用户信息成功'
        })
    })
}


//更新用户密码的处理函数
exports.updatePwd=(req,res)=>{

   //  根据token中在req上挂载的user信息中的id搜索用户是否存在
   const sql="select * from ev_users where id=?"
   db.query(sql,req.user.id,(err,result)=>{
       if(err){
           return res.send({
               status:201,
               msg:err.message
           })
       }
       if(result.length!==1){
           return res.send({
               status:201,
               msg:'用户不存在'
           })
       }
       // 对比用户传来的旧密码和数据库密码
       // 即可使用 bcrypt.compareSync(提交的密码，数据库中的密码) 方法验证密码是否正确
// compareSync() 函数的返回值为布尔值，true 表示密码正确，false 表示密码错误
       const compareResult=bcrypt.compareSync(req.body.oldPwd,result[0].password)
       if(!compareResult){
          return res.send({
               status:201,
               msg:'原密码错误！'
           })
       }

       // 全部验证通过，修改数据库密码
       // 对新密码进行加密
       const newPwd = bcrypt.hashSync(req.body.newPwd, 10)

       const sql1="update ev_users set password=? where id=?"
       db.query(sql1,[newPwd,req.user.id],(err,result)=>{
           if(err){
               return res.send({
                   status:201,
                   msg:err
               })
           }
           if(result.affectedRows!==1){
               return res.send({
                   status:201,
                   msg:'更新密码失败!'
               })
           }
           return res.send({
               status:200,
               msg:'更新密码成功!'
           })
       })

   })

}


//更换用户头像的处理函数
exports.updateAvatar=(req,res)=>{

    const sql='update ev_users set user_pic=? where id=?'
    db.query(sql,[req.body.avatar,req.user.id],(err,result)=>{
        if(err){
            return res.send({
                status:201,
                msg:err
            })
        }
        if(result.affectedRows!==1){
            return  res.send({
                status:201,
                msg:"更新用户头像失败！"
            })
        }
        return res.send({
            status:200,
            msg:'更新用户头像成功！'
        })
    })

}